Skip to main content
Last updated on

APO 指标介绍

APO 采用 Prometheus 指标模式进行采集、存储和查询指标,指标实际存储在 VictoriaMetrics 中。

APO 产品使用的指标包含两大部分:自研指标开源生态指标

自研指标

APO 通过自研实现了以下指标:

下面分别对各指标进行描述。

接口粒度的请求次数、响应耗时和错误率

指标中包含了服务端处理请求的次数、响应耗时和错误情况(RED),指标名称如下:

  • kindling_span_trace_duration_nanoseconds_count:接口粒度的请求总次数
  • kindling_span_trace_duration_nanoseconds_sum:接口粒度的响应时间总和
  • kindling_span_trace_duration_nanoseconds_bucket:接口粒度的响应耗时分布情况

该指标采用 VictoriaMetrics Histogram 数据类型存储,依据 Histogram 能够计算出请求的耗时分布情况。

指标标签说明

名称含义示例备注
pid进程ID12345
svc_name服务名称ts-station-service
content_key请求端点StationController#queryForIdBatch
is_error请求是否错误true/false
top_span是否是链路入口true/false
node_name应用所在主机名node-1
container_id容器ID的前12位2be6619c26c6仅适用于容器环境
podPod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
workload_kind工作负载类型Deployment仅适用于 Kubernetes 环境
workload_name工作负载名ts-station-service仅适用于 Kubernetes 环境
namespace命名空间default仅适用于 Kubernetes 环境

数据库请求次数、请求耗时和错误率

该指标从客户端进行统计,含义为某一个应用请求数据库的情况,指标名称如下:

  • kindling_db_duration_nanoseconds_count:请求数据库的总次数
  • kindling_db_duration_nanoseconds_sum:请求数据库的耗时总和
  • kindling_db_duration_nanoseconds_bucket:请求数据库的耗时分布情况

该指标采用 VictoriaMetrics Histogram 数据类型存储,依据 Histogram 能够计算出请求的耗时分布情况。

指标标签说明

名称含义示例备注
pid进程ID12345
svc_name服务名称ts-station-service
name收敛后的执行语句SELECT ts.route格式:“操作名 表名”
db_name数据库名称ts
db_system数据库类型名称mysql
is_error请求是否错误true/false
node_name应用所在主机名node-1
container_id容器ID的前12位2be6619c26c6仅适用于容器环境
podPod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
workload_kind工作负载类型Deployment仅适用于 Kubernetes 环境
workload_name工作负载名ts-station-service仅适用于 Kubernetes 环境
namespace命名空间default仅适用于 Kubernetes 环境

接口粒度的北极星因果指标

通过 eBPF 技术将服务端处理单次请求的耗时拆解为完备的资源耗时,包括:

  • 在CPU上执行耗时
    • kindling_profiling_cpu_duration_nanoseconds_count
    • kindling_profiling_cpu_duration_nanoseconds_sum
    • kindling_profiling_cpu_duration_nanoseconds_bucket
  • 等待调度到CPU上耗时
    • kindling_profiling_runq_duration_nanoseconds_count
    • kindling_profiling_runq_duration_nanoseconds_sum
    • kindling_profiling_runq_duration_nanoseconds_bucket
  • 等待网络IO耗时
    • kindling_profiling_net_duration_nanoseconds_count
    • kindling_profiling_net_duration_nanoseconds_sum
    • kindling_profiling_net_duration_nanoseconds_bucket
    • kindling_profiling_epoll_duration_nanoseconds_count
    • kindling_profiling_epoll_duration_nanoseconds_sum
    • kindling_profiling_epoll_duration_nanoseconds_bucket
  • 等待Futex耗时(例如等待锁耗时)
    • kindling_profiling_futex_duration_nanoseconds_count
    • kindling_profiling_futex_duration_nanoseconds_sum
    • kindling_profiling_futex_duration_nanoseconds_bucket
  • 等待文件IO耗时
    • kindling_profiling_file_duration_nanoseconds_count
    • kindling_profiling_file_duration_nanoseconds_sum
    • kindling_profiling_file_duration_nanoseconds_bucket
  • 等待其他资源耗时(多数情况为发生缺页导致的耗时)。
    • kindling_profiling_other_duration_nanoseconds_count
    • kindling_profiling_other_duration_nanoseconds_sum
    • kindling_profiling_other_duration_nanoseconds_bucket

这些被拆解出的资源耗时指标被称为“北极星指标”。

北极星指标采用 VictoriaMetrics Histogram 数据类型存储,依据 Histogram 能够计算出请求的耗时分布情况。

在北极星指标中,每个指标都包含三个指标,后缀分别为:_count_sum_bucket,含义解释:

  • Count 指标含义解释:北极星指标的_count指标与服务端处理请求次数相同。
  • Sum 指标含义解释:将在该资源上发生的耗时累计在一起。
  • Bucket 指标含义解释:统计在某个区间内的请求次数。

指标标签说明

名称含义示例备注
pid进程ID12345
svc_name服务名称ts-station-service
content_key请求端点StationController#queryForIdBatch
is_error请求是否错误true/false
top_span是否是链路入口true/false
node_name应用所在主机名node-1
container_id容器ID的前12位2be6619c26c6仅适用于容器环境
podPod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
workload_kind工作负载类型Deployment仅适用于 Kubernetes 环境
workload_name工作负载名ts-station-service仅适用于 Kubernetes 环境
namespace命名空间default仅适用于 Kubernetes 环境

日志中错误数

  • originx_logparser_exception_count_total:日志中出现 Exception 的日志总行数
  • originx_logparser_level_count_total:按照日志级别统计的总行数

以上两个指标均为 Counter 类型。

指标标签说明

名称含义示例备注
pid进程ID12345仅适用于虚拟机进程
source_from日志来源stdout
host_ip应用所在主机的 IP 地址192.168.1.6
host_name应用所在主机名node-1
container_id容器ID的前12位2be6619c26c6仅适用于容器环境
container_name容器名ts-station-service仅适用于容器环境
pod_namePod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
namespace命名空间default仅适用于 Kubernetes 环境

originx_logparser_exception_count_total 额外包含以下标签:

名称含义示例备注
exception异常类型HttpClientErrorException

originx_logparser_level_count_total 额外包含以下标签:

名称含义示例备注
level日志级别ERROR

应用间的网络 ping 延时

该指标的视角为发起 ping 一侧的应用。

  • 指标名称:kindling_network_rtt
  • 指标类型:Gauge

指标标签说明

名称含义示例备注
pid进程ID12345
node_name应用所在主机名node-1
node_ip应用所在主机 IP192.168.1.6
container_id容器ID的前12位2be6619c26c6仅适用于容器环境
podPod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
workload_kind工作负载类型Deployment仅适用于 Kubernetes 环境
workload_name工作负载名ts-station-service仅适用于 Kubernetes 环境
namespace应用所在命名空间default仅适用于 Kubernetes 环境
src_ip发起 ping 的 IP192.168.1.6
src_podPod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
src_node应用所在主机名node-1
src_namespace应用所在命名空间default仅适用于 Kubernetes 环境
dst_ip被 ping 的 IP10.244.68.121
dst_node被 ping 的应用所在主机名node-2
dst_pod被 ping 的 Pod 名ts-station-service-d465b46c4-vxj2r仅适用于 Kubernetes 环境
dst_namespace被 ping 的应用所在命名空间default仅适用于 Kubernetes 环境

应用启动时间指标

该指标只在应用存活期间存在。

  • 指标名称:originx_process_start_time
  • 指标类型:Gauge

指标标签说明

名称含义示例备注
pid进程ID12345
node_name应用所在主机名node-1
node_ip应用所在主机 IP192.168.1.6
container_id容器ID的前12位2be6619c26c6仅适用于容器环境

开源生态指标

APO 集成了 Grafana Alloy 作为指标采集器,该组件将常见的开源指标采集器进行了集成,支持通过配置开箱即用采集各类指标。

默认情况下,APO 开启了 Alloy 中以下组件采集指标:

  • node-exporter:主机层面指标
  • cadvisor:容器层面指标
  • kubelet:Kubernetes 中 kubelet 指标

除此以外,可以通过配置采集各类中间件的指标。完整的可采集指标列表见 Grafana Alloy 文档